// pages/vote_center/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    voteList: [],
    loading: true,
    isEmpty: false,
    navBarHeight: 0, // 导航栏总高度 = 状态栏高度 + 导航栏高度
    contentTop: 0, // 内容区域top位置
    bottomSafeArea: 0 // 底部安全区域高度
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.initNavHeight()
    this.loadVoteList()
  },

  /**
   * 初始化导航栏高度和底部安全区域
   */
  initNavHeight() {
    try {
      const systemInfo = wx.getSystemInfoSync()
      const statusBarHeight = systemInfo.statusBarHeight
      const navBarHeight = statusBarHeight + 44 // 44是导航栏内容高度
      const bottomSafeArea = systemInfo.safeArea ? systemInfo.screenHeight - systemInfo.safeArea.bottom : 0
      
      this.setData({
        navBarHeight,
        contentTop: navBarHeight,
        bottomSafeArea
      })
    } catch (error) {
      this.setData({
        navBarHeight: 64,
        contentTop: 64,
        bottomSafeArea: 0
      })
    }
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 每次显示页面时刷新数据
    this.loadVoteList()
  },

  /**
   * 加载投票列表
   */
  async loadVoteList() {
    try {
      this.setData({ loading: true })
      
      const result = await wx.cloud.callFunction({
        name: 'getVoteList',
        data: {}
      })

      if (result.result.success) {
        const voteList = (result.result.data || []).map(vote => ({
          ...vote,
          isEnded: vote.endTime ? new Date() > new Date(vote.endTime) : false,
          // 确保背景图片正确处理
          backgroundImage: vote.backgroundImage || '',
          // 预格式化时间 - 创建时间用相对时间，截止时间用绝对时间
          formattedEndTime: this.formatEndTime(vote.endTime),
          formattedCreateTime: this.formatTime(vote._createTime)
        }))
        this.setData({
          voteList: voteList,
          isEmpty: voteList.length === 0,
          loading: false
        })
      } else {
        console.error('获取投票列表失败:', result.result.message)
        wx.showToast({
          title: '获取投票列表失败',
          icon: 'none'
        })
        this.setData({ loading: false, isEmpty: true })
      }
    } catch (error) {
      console.error('加载投票列表出错:', error)
      wx.showToast({
        title: '网络错误，请重试',
        icon: 'none'
      })
      this.setData({ loading: false, isEmpty: true })
    }
  },

  /**
   * 点击投票卡片
   */
  onVoteItemTap(e) {
    const voteId = e.currentTarget.dataset.id
    if (!voteId) {
      wx.showToast({
        title: '投票ID无效',
        icon: 'none'
      })
      return
    }

    wx.navigateTo({
      url: `/pages/vote_detail/index?voteId=${voteId}`
    })
  },

  /**
   * 下拉刷新
   */
  onPullDownRefresh() {
    this.loadVoteList().then(() => {
      wx.stopPullDownRefresh()
    })
  },

  /**
   * 格式化时间（相对时间，用于创建时间）
   */
  formatTime(timestamp) {
    if (!timestamp) return ''
    
    const date = new Date(timestamp)
    const now = new Date()
    const diff = now - date
    
    if (diff < 60000) { // 1分钟内
      return '刚刚'
    } else if (diff < 3600000) { // 1小时内
      return Math.floor(diff / 60000) + '分钟前'
    } else if (diff < 86400000) { // 1天内
      return Math.floor(diff / 3600000) + '小时前'
    } else if (diff < 2592000000) { // 30天内
      return Math.floor(diff / 86400000) + '天前'
    } else {
      return date.getMonth() + 1 + '月' + date.getDate() + '日'
    }
  },

  /**
   * 格式化截止时间（绝对时间）
   */
  formatEndTime(timestamp) {
    if (!timestamp) return ''
    
    const date = new Date(timestamp)
    return `${date.getFullYear()}年${date.getMonth() + 1}月${date.getDate()}日 ${date.getHours()}:${date.getMinutes().toString().padStart(2, '0')}`
  },

  /**
   * 计算投票百分比
   */
  calculatePercentage(votes, totalVotes) {
    if (!totalVotes || totalVotes === 0) return 0
    return Math.round((votes / totalVotes) * 100)
  },

  /**
   * 导航栏返回按钮点击
   */
  onNavBack() {
    wx.navigateBack()
  },

  /**
   * 分享功能
   */
  onShareAppMessage() {
    return {
      title: '投票中心 - 参与精彩投票',
      path: '/pages/vote_center/index'
    }
  }
})